[algorithm] 1차 비밀지도

2018 KAKAO BLIND RECRUITMENT 1차 비밀지도

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/17681

function solution(n, arr1, arr2) {
  // 숫자를 2진수로 바꾸고 만약 x의 length가 n보다 작다면 n만큼 0을 붙여줍니다
  const changedArr = (arr = []) => {
    // 받은 배열을 map
    const newArr = arr.map(x => {
      // 1. 2진수로 바꿉니다
      x = x.toString(2)

      // 만약 숫자가 작다면 n의 길이로 만들어줍니다
      if (x.length !== n) {
        const addZero = '0'.repeat(n - x.length)
        x = addZero + String(x)
      }
      return x
    })
    return newArr
  }

  const newArr1 = changedArr(arr1)
  const newArr2 = changedArr(arr2)

  // 배열을 겹쳐 지도를 만듭니다
  const overlapArr = (arr1 = [], arr2 = []) => {
    const map = arr1.map((x, xIdx) => {
      const mapLine = x.split('').map((y, yIdx) => {
        if (Number(arr1[xIdx][yIdx]) + Number(arr2[xIdx][yIdx]) === 0) {
          return ' '
        } else {
          return '#'
        }
      })
      return mapLine.join('')
    })
    return map
  }

  return overlapArr(newArr1, newArr2)
}

어떻게 풀어야하는지는 머리속에서 바로 떠올랐지만, 다소 무식하게 푼 느낌이 있습니다.

여전히 다른사람들의 풀이를 보면 신가할 따름입니다.

그래도 이정도면 하루10분 말랑말랑하게 풀만 할 것 같습니다.


Written by@JeongYeonJae
이것저것 쓰는 개발블로그

ResumeGitHub